6626
3793
Bu yüzden, bir yapı listesi ile ilgili olarak list :: sort () 'nin doğru kullanımını bulmakta biraz güçlük çekiyorum. İşte ilgili kod:
yapı öğrencisi
{
char firstnm [20],
lastnm [20];
int id,
derece;
};
list <öğrenci> sList;
// Alakasız kod ...
cout << "Lütfen kendi adınızı, kimliğinizi ve derecenizi girin. (Örn: ilk mylast 0 12) \ n";
cin >> data.firstnm >> data.lastnm >> data.id >> data.grade;
sList.push_back (veri);
sList.sort ();
Çözmeye çalıştığım problem id'ye göre sıralamak için sList.sort () kullanmak. Bununla birlikte, list :: sort () 'a nasıl düzgün bir şekilde aktaracağımı bilmiyorum. Herhangi bir yardım / zaman için şimdiden teşekkürler!
DÜZENLEME: Çözüm bunu basitçe yapıma eklemekti
bool operatörü <(const student & cmp) const {
dönüş kimliği 
                                
Std :: sort'a bir göz atmalısınız. (https://en.cppreference.com/w/cpp/algorithm/sort) Bu işlevin birden çok tanımı vardır ve bir tanesi neyi sıralamak istediğinizi belirtebilirsiniz.
Ayrıca, bu gönderiye bir göz atın, bence ihtiyacınız olan şey: https://stackoverflow.com/a/21234017/6663947
Düzenle :
bu bir karşılaştırıcı örneği:
sList.sort ([] (const öğrenci & a, const öğrenci & b) {dönüş a.id 
geçersiz sıralama (Karşılaştırma karşılaştır);
Listenizdeki öğrenci nesnelerini anahtar kimliğine göre artan düzende sıralamak istediğinizi varsayarsak. Kullanıcı tanımlı öğrenci sınıfınız için